﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;
namespace GUI
{
    public partial class FrmChiTietHoaDon : Form
    {
        BanBUS banBUS = new BanBUS();
        MonAnBUS monBUS = new MonAnBUS();
        ChiTietHoaDonBUS ctBUS = new ChiTietHoaDonBUS();
        HoaDonBUS hdBUS = new HoaDonBUS();
        ChiTietHoaDonDTO dk = new ChiTietHoaDonDTO();
        public int mahd = int.Parse(Bien.mahd);
        public string maban = Bien.maban;
        public FrmChiTietHoaDon()
        {
            InitializeComponent();

            //load ma mon
            cbxMonAn.DataSource = monBUS.LayDanhSachMonAn();
            cbxMonAn.DisplayMember = "TenMon";
            cbxMonAn.ValueMember = "MaMonAn";
            //load ds cthd theo mahd
            Load_ChiTietHD();
        }
        public void Load_ChiTietHD()
        {
            //dtgrChiTietHD.Refresh();
            dtgrChiTietHD.DataSource = ctBUS.LayDanhSachChiTietHoaDon(mahd);
            dtgrChiTietHD.Columns["MaHD"].HeaderText = "Mã Hóa Đơn";
            dtgrChiTietHD.Columns["MaBan"].HeaderText = "Mã Bàn";
            dtgrChiTietHD.Columns["MaMonAn"].HeaderText = "Mã Món Ăn";
            dtgrChiTietHD.Columns["SoLuong"].HeaderText = "Số Lượng";
            dtgrChiTietHD.Columns["DonGia"].HeaderText = "Đơn Giá";
            dtgrChiTietHD.Columns["TongTien"].HeaderText = "Tổng Tiền";
        }
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            ChiTietHoaDonDTO cthddto = new ChiTietHoaDonDTO(); 
            if (cbxMonAn.Text != "")
            {
                cthddto.MaMonAn = int.Parse(cbxMonAn.SelectedValue.ToString());
            }
            else
            {
                MessageBox.Show("Chưa Chọn Món!");
                return;
            }
            if (txtSoLuong.Text != "")
            {
                cthddto.SoLuong = int.Parse(txtSoLuong.Text);
            }
            else
            {
                MessageBox.Show("Chưa Nhập Số Lượng!");
                return;
            }
            cthddto.MaHD = mahd;
            cthddto.MaBan = maban;
            cthddto.DonGia = monBUS.LayGiaMonAnTheoMaBan(cthddto.MaBan, cthddto.MaMonAn);
            cthddto.TongTien = cthddto.DonGia * cthddto.SoLuong;
            if (ctBUS.KiemTraTrungMa(cthddto) != 1)
            {
                if (ctBUS.ThemChiTietHoaDon(cthddto) == 1)
                {
                    Load_ChiTietHD();
                    HoaDonDTO hd = new HoaDonDTO();
                    hd.MaHD = mahd;
                    hd.TenUser = User.TenUser;
                    hd.TinhTrangHD = "";
                    hd.GioRa = "";
                    hd.ThanhTien = ctBUS.TinhTongTienChiTietHoaDon(mahd);
                    hdBUS.CapNhatHoaDon(hd);
                    BanBUS banBUS = new BanBUS();
                    BanDTO bn = new BanDTO();
                    bn.MaBan = cthddto.MaBan;
                    bn.TrangThai = "Bận";
                    banBUS.CapNhatBan(bn);
                    MessageBox.Show("Thêm Chi Tiết Hóa Đơn Thành Công!");
                }
                else
                {
                    MessageBox.Show("Thêm Chi Tiết Hóa Đơn Thất Bại!");
                    return;
                }
            }
            else
            {               
                MessageBox.Show("Món Ăn Này Đã Có Trong Hóa Đơn!");
                return;
            }
        }

        private void FrmChiTietHoaDon_FormClosed(object sender, FormClosedEventArgs e)
        {
            FrmLapHoaDon f = new FrmLapHoaDon();
            f.MdiParent = Program.frm_manhinhchinh;
            f.StartPosition = FormStartPosition.CenterScreen;
            f.Show();    
        }

        private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            int flag = 0;
            foreach (DataGridViewRow row in dtgrChiTietHD.Rows)
            {
                if (row.Cells[0].Value != null)
                {
                    flag = 1;
                    ChiTietHoaDonDTO cthd =new ChiTietHoaDonDTO();
                    cthd.MaHD = int.Parse(row.Cells["MaHD"].Value.ToString());
                    cthd.MaBan = row.Cells["MaBan"].Value.ToString();
                    cthd.MaMonAn = int.Parse(row.Cells["MaMonAn"].Value.ToString());
                    ctBUS.XoaChiTietHoaDon(cthd);
                    BanBUS banBUS = new BanBUS();
                    BanDTO bn = new BanDTO();
                    //cập nhật lại trạng thái bàn 
                    bn.MaBan = cthd.MaBan;
                    bn.TrangThai = "Trống";
                    banBUS.CapNhatBan(bn);
                }
            }
            if (flag == 0)
            {
                MessageBox.Show("Chưa Chọn Chi Tiết Hóa Đơn Để Xóa!");
                return;
            }
            Load_ChiTietHD();
            HoaDonDTO hd = new HoaDonDTO();
            hd.MaHD = mahd;
            hd.TenUser = User.TenUser;
            hd.TinhTrangHD = "";
            hd.GioRa = "";
            hd.ThanhTien = ctBUS.TinhTongTienChiTietHoaDon(mahd);
            hdBUS.CapNhatHoaDon(hd);
            MessageBox.Show("Xóa Thành Công!");
            return;
        }
        
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            //cap nhat chi tiet hoa don
            ChiTietHoaDonDTO cthddto = new ChiTietHoaDonDTO();
            if (cbxMonAn.Text != "")
            {
                cthddto.MaMonAn = int.Parse(cbxMonAn.SelectedValue.ToString());
            }
            else
            {
                MessageBox.Show("Chưa Chọn Món!");
                return;
            }
            if (txtSoLuong.Text != "")
            {
                cthddto.SoLuong = int.Parse(txtSoLuong.Text);
            }
            else
            {
                MessageBox.Show("Chưa Nhập Số Lượng!");
                return;
            }
            cthddto.MaHD = mahd;//mahd này âấy từ đâu ?

            cthddto.MaBan = maban;
            cthddto.DonGia = monBUS.LayGiaMonAnTheoMaBan(cthddto.MaBan, cthddto.MaMonAn);
            cthddto.TongTien = cthddto.DonGia * cthddto.SoLuong;
            int dem = 0;
            foreach (DataGridViewRow r in dtgrChiTietHD.Rows)
            {
                if (r.Cells[0].Value != null)
                {
                    dem++;
                }
            }
            if (dem != 1)
            {
                MessageBox.Show("Hãy Kiểm Tra Lại!\nCó Thể Bạn Chưa Chọn Hoặc Chọn Hơn 1 Chi Tiết Hóa Đơn!");
                Load_ChiTietHD();
                return;
            }
            if (ctBUS.CapNhatChiTietHoaDon(cthddto,dk.MaMonAn) != 0)
            {
                HoaDonDTO hd = new HoaDonDTO();
                hd.MaHD = mahd;
                hd.TenUser = User.TenUser;
                hd.TinhTrangHD = "";
                hd.GioRa = "";
                hd.ThanhTien = ctBUS.TinhTongTienChiTietHoaDon(hd.MaHD);
                hdBUS.CapNhatHoaDon(hd);
                MessageBox.Show("Cập Nhật Chi Tiết Hóa Đơn Thành Công!");
                Load_ChiTietHD();
                return;
            }
            else
            {
                MessageBox.Show("Cập Nhật Chi Tiết Hóa Đơn Thất Bại!");
                return;
            }
        }


        private void dtgrChiTietHD_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                cbxMonAn.SelectedValue = int.Parse(dtgrChiTietHD.CurrentRow.Cells["MaMonAn"].Value.ToString());
                txtSoLuong.Text = dtgrChiTietHD.CurrentRow.Cells["SoLuong"].Value.ToString();
                dk.MaHD = mahd;
                dk.MaBan = dtgrChiTietHD.CurrentRow.Cells["MaBan"].Value.ToString();
                dk.MaMonAn = int.Parse(dtgrChiTietHD.CurrentRow.Cells["MaMonAn"].Value.ToString());
            }
        }
    }
}
